草庐IT

c++ - 包装第 3 方 DLL

全部标签

c -/vs.\in CMD 和 C 系统函数中可执行文件的相对路径

考虑以下Windows10上的CMDsession,以#开头的行是注释:#WehavethissimpleprogramD:\testdir>typeprg.c#includeintmain(){printf("Helloprg");return0;}#Thisis"realgcc.exe(Rev2,BuiltbyMSYS2project)6.2.0"D:\testdir>gccprg.c-oprgD:\testdir>prg.exeHelloprgD:\testdir>mddirD:\testdir>cddirD:\testdir\dir>..\prg.exeHelloprg#Thi

python - 在 Python 中加载 dll 时出现 Windows 错误 1114

我目前正在尝试将一些代码从32位WindowsXP计算机移植到64位Windows10计算机。我需要在我的python代码中导入家庭开发的Cdll,如下所示:fromctypesimport*[...]self.inter_test_dll=windll.LoadLibrary("my.dll")self.w=QtWidgets.QWidget()self.wid=self.w.winId()self.wid.setsize(64)print(self.wid)self.inter_test_dll.dll_load_window(int(self.wid),'test')self.i

c# - 来自 C# : why do I have to override new/delete? 的 mingw DLL

我正在尝试从Windows10上的C#调用最小的C函数。我使用mingw/g++将C代码编译成.dll事实证明,我必须定义opteratornew[]或使用VisualStudio编译.dll。否则我的C#程序会因以下错误而崩溃:程序“[14740]Test.exe”已退出,代码为-1073741819(0xc0000005)“访问冲突”。我真的很想了解这里究竟发生了什么,以及我如何在不覆盖所有新/删除运算符但仍然使用mingw的情况下解决这个问题。这是重现错误的最小示例,包括解决方法(如果定义了AddNewOperator,operatornew[]将被定义并且生成的.dll将正常工

c - Windows - 如何清理进程异常终止留下的共享内存对象?

我遇到了一个问题,进程异常终止,因此一些共享资源(BaseNamedObjects)未被进程释放。CreateFileMapping函数返回ERROR_ALREADY_EXISTS表示共享内存已经存在。通过CreateFileMapping获取ERROR_ALREADY_EXISTS后返回一个句柄。所以我有以下与上述情况相关的查询:我们可以使用这个返回的句柄执行清理吗?我们可以使用CreateFileMapping返回的句柄吗?如何清理这样的共享内存对象? 最佳答案 返回的句柄对您继续使用是完全有效的,使用完毕后请关闭该句柄。但是,

c - C Windows 中的单 channel 隧道互斥锁示例

我正在尝试解决经典的“单channel隧道”信号量/互斥量问题。这是我写的代码,但它不起作用,我不明白为什么。理论上,只有当隧道已经被同向行驶的汽车占用时,来自相反方向的汽车才应该穿过,否则它们应该等待,输出应该是这样的:car1_leftToRightcrossingcar2_leftToRightcrossingcar1_leftToRightendcrossingcar2_leftToRightendcrossing(ALLcarsleftToRighthavecrossed)car1_rightToLeftstartcrossingetc..但我当前的输出是您可以在我附上的图片

c - 我应该在 DLL 导出函数上使用 __stdcall 吗?

我正在使用mingw-w64在C中编写一个小的DLL,它应该可以被VB.net程序调用。唯一的导出是参数和返回类型为原始类型的函数。我应该在dllexport函数上使用__stdcall吗?在网上搜索时,我看到了使用和不使用它的示例。讨论了它如何影响名称装饰,但没有关于这是否是一件好事以及对我的DLL的可用性有何影响的建议。 最佳答案 除非您需要调用以这种方式定义的现有接口(interface),否则确实没有充分的理由在任何地方使用非默认调用约定/ABI(__stdcall或其他方式)。这只是无缘无故的丑陋。它对现有Windows的

c - 如何在 Windows 10 上通过 openMP 使用所有 NUMA 节点

我可以访问由两个NUMA节点组成的双路系统来进行一些数据处理。我的代码相对简单,我将openMP用于一个看起来像这样的可并行化主循环(k是一个函数参数,buffer是一个几千兆字节的长度为n的数组):uint64_tm=0;uint64_t*rk=(uint64_t*)calloc(k,sizeof(uint64_t));#pragmaompparallel{#pragmaompforreduction(+:m),reduction(+:rk[:k])for(uint64_ti=0;i在LinuxMint下,我可以毫无问题地使用gcc进行编译,并且两个插槽上的所有内核都得到了很好的利用

c++ - 在 native DLL 中嵌入多个同名资源 (RC) 文件

对于我的应用程序(一个MMC管理单元),我需要创建一个包含本地化为不同语言的字符串的本地DLL。换句话说,如果您要使用VisualStudio检查此DLL,您会看到多个字符串表,每个表与不同的区域设置相关联但包含相同的字符串ID。我想采取的方法是在我的项目目录下有各种子目录,例如“de”、“en”、“es”等(即每种语言一个)。每个子目录中都有一个名为“Resources.rc”的文件,它是包含该语言字符串的RC文件。在这种结构中拥有我的资源对于本地化团队来说是理想的。我已经设法创建了各种RC文件并将它们添加到我的VisualC++项目中。它们都正确显示在VisualStudio的解决

c - Erlang:找不到指定的模块

我有一个最低限度的Erlang端口驱动程序:erl_driver_bridge.c->erl_driver_bridge.dll#define__WIN32__#include"erl_driver.h"typedefstruct{ErlDrvPortport;}erl_driver_bridge_data;staticErlDrvDatabridge_start(ErlDrvPortport,char*buff){erl_driver_bridge_data*d=(erl_driver_bridge_data*)driver_alloc(sizeof(erl_driver_bridg

windows - 如何使用 Win32::API 调用 Win32 DLL void** 参数?

我有一个要从Perl调用的WindowsDLL。导出函数的原型(prototype)是:int__stdcallfunc(constchar*,int,int,int,double,double,void**);最后一个参数返回指向函数中分配的对象的指针。perl代码–my$dll_path="../stage/test_dll.dll";my$dll_func=newWin32::API($dll_path,'func','PIIIDDP','I');my$data="testsomethinghere";my$pResult=0;my$rc=$dll_func->Call($dat